package day05;

/**
 * @author yzh
 * @desc TODO
 * @date 2025/4/14
 */

import java.util.Arrays;

/**
 * 1.赋值：  数据类型 变量名 = 值;
 * int a = 10; 基本数据类型赋值，赋的是二进制的数据
 * int[] arr = brr;  引用数据类型赋值，赋的是地址
 *
 * 2.值传递：将实际的值，传递给方法中的形参列表，就是赋值的过程
 *
 * 基本数据类型的值传递（String、包装器类型）
 * 形参改变  实参不变
 *
 * 引用数据类型的值传递
 * 形参改变  实参改变
 *
 * String类型的值传递
 * 虽然String是引用数据类型，但是值传递遵循的是基本数据类型值传递的规则
 * 形参改变  实参不变
 */

public class ValuePass {
    public static void main(String[] args) {
        int x = 5;
        int[] arr = {1,2,3,4,5};
        String str = "hello";
        change(x);
        change(arr);
        change(str);
        System.out.println("main() x="+x);
        System.out.println("main() arr="+Arrays.toString(arr));
        System.out.println("main() str="+str);
    }

    public static void change(int x){
        x+=5;
        System.out.println("change() x="+x);
    }

    public static void change(int[] arr){
        arr[0] = 5;
        System.out.println("change() arr="+Arrays.toString(arr));
    }

    public static void change(String str){
        str+=" world";
        System.out.println("change() str="+str);
    }
}
